import createElement from './createElement';
import updateChildren from './updateChildren';
// 对比同一个虚拟节点
export default function patchVnode(oldVnode, newVnode) {
    let elm = oldVnode.elm;
    // 新旧节点是否是同一个对象
    if (oldVnode === newVnode) { return; }
    if (newVnode.text !== undefined && (newVnode.children === undefined ||
        newVnode.children.length === 0)) { // 新节点有 text 属性
        // 新节点的 text 给老节点的 innerText
        if (oldVnode.text !== newVnode.text) {
            elm.innerText = newVnode.text;
        }
    } else { // 新节点没有 text 属性，有 children 属性
        if (Array.isArray(oldVnode.children) && oldVnode.children.length) {
            // 老节点有 children，此时为五角星最复杂的情况，新老都有children
            updateChildren(oldVnode.elm, oldVnode.children, newVnode.children);
        } else { // 老节点没有 children 属性， 有 text 属性
            // 新节点有 children
            elm.innerHTML = "";
            // 清空 oldVnode 的 text,并且将 children 添加到 DOM 中
            newVnode.children.forEach(item => {
                let newVnodeElm = createElement(item);
                elm.appendChild(newVnodeElm);
            });
        }
    }
}